﻿import csv
import math
from collections import Counter

#-----------------------------------------------------------------------------------------

# Recebe um CSV

#   sigla;nome
#   MG;Minas Gerais
#   SP;Sao Paulo
#   RJ;Rio de Janeiro

# E coloca numa matrix

#   [['sigla', 'MG', 'SP', 'RJ'], ['nome', 'Minas Gerais', 'Sao Paulo', 'Rio de Janeiro']]

#-----------------------------------------------------------------------------------------
def cria_matriz(diretorio):
    
    cr = csv.reader(open(diretorio,"rb"))
    flag = 0
    i = 0
    j = 1
    matriz = []
    tamh_h_matriz = 0
    for linha in cr:
        if(flag==0):
            c =  Counter(linha[0])
            tamh_h_matriz = c[";"]
            matriz = [0]*(tamh_h_matriz+1)
            for m in range(tamh_h_matriz+1):
                matriz[m] = []
            flag=1
        campos = linha[0].split(";")
        for valor in campos:
            matriz[i].append(valor)

            i = j%(tamh_h_matriz+1)
            j = j+1
    return matriz

# Recebe uma lista do tipo ['sigla', 'MG', 'SP', 'RJ'], onde o primeiro elemento é o nome do atributo.
def entropia(lista):
    valores = list(set(lista[1:]))
    s = []
    for i in valores:
        j = lista.count(i)
        s.append(j)
    e = 0
    tam = len(lista)-1
    for i in s:
        e = e -(i*1.0/tam)*math.log(i*1.0/tam,2)
    return e



